package homework.day05;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 将当前目录下的所有文件都复制一份，复制的文件命名为:原
 * 文件名_cp.后缀
 * 比如原文件为:test.dat
 * 复制后的文件为:test_cp.dat
 *
 *
 * @author Jobs
 *
 */
public class Test03 {
    public static void main(String[] args) throws IOException {

        String path = "./src/main/java/homework/";
        // 使用File类的listFiles()方法获取当前目录下的所有文件
        File file = new File(path + "day05");
        File[] files = file.listFiles();
        // 创建集合去存储拆分后的文件名
        List<String> fileList = new ArrayList<>();
        for(File file1:files){
            String name = file1.getName();
            System.out.println(name);
            String[] split = name.split("\\.");
            String s = split[0] + "_cp." + split[1];
            // System.out.println(s);
            fileList.add(s);
        }

        // 循环
        for(int i = 0;i<files.length;i++){
            System.out.println(files[i]);
            System.out.println(fileList.get(i));
            // 使用字节输入流读取每一个文件
            FileInputStream fis = new FileInputStream(files[i]);
            // 声明整数去存储读取到的字节数据
            int len;
            // 使用缓冲流
            BufferedInputStream bis = new BufferedInputStream(fis);

            // 使用字节输出流去写入每个文件,文件名通过集合获取
            FileOutputStream fos = new FileOutputStream(path+"day05_copy/"+fileList.get(i));
            // 使用缓冲流写入数据
            BufferedOutputStream bos = new BufferedOutputStream(fos);
            while((len = bis.read())!=-1){
                bos.write(len);
            }
            fis.close();
            bos.flush();
            bos.close();

            System.out.println("复制成功");
        }


    }
}




/**
 * 思路:
 * 分为几部分考虑.
 * 第一个是要获取到当前目录中的所有文件(思考哪个API可以解决)
 * 第二个是获取到的每一个文件都要复制(复制用什么API)
 * 第三个是复制的文件名，如何重新组建xxx_cp.xxx的名字?
 *      这里要将原文件名拆开后想办法拼接_cp.
 */


